def stepen(a:float, n:int):
    """ Функция везведения в степень
        На вход принимает 2 значения
        a - число, которое нужно возвести
        n - степень, в которую нужно возвести (int)
        Возвращает число a в степени n

    """

    if n == 1:
        return a
    return stepen(a, n-1) * a

def fast_stepen(a:float, n:int):
    """ Функция быстрого возведения в степень
        На вход принимает 2 значения
        a - число, которое нужно возвести в степень
        n - степень, в которую нужно возвести (int)
        Возвращает число a в степени n

    """

    if n == 1:
        return a

    if n//2:
        return fast_stepen(a, n-1) * a
    return fast_stepen(a**2, n/2)

def test_stepen(algorithm):

    print(algorithm(4, 2))
    print(algorithm(2, 10))
    print(algorithm(3, 3))
    print(algorithm(11, 2))

test_stepen(fast_stepen)
